From: Florian Müllner Date: Wed, 5 Sep 2018 13:27:02 +0000 (+0200) Subject: workspaceTracker: Don't keep multiple trailing workspaces X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~929^2^2~45 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9d6e1a89fcd8911aa6d822b4757b463e13dcd3f3;p=gnome-shell.git workspaceTracker: Don't keep multiple trailing workspaces Since we always keep the active workspace until the user switches to a different one, we may end up with two empty workspaces at the end. It's not obvious to users why this happens, and there's indeed no good reason for the behavior - just remove the trailing workspace in that case. https://gitlab.gnome.org/GNOME/gnome-shell/issues/536 --- diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 2295e3010..0c6ab1be0 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -278,15 +278,18 @@ var WorkspaceTracker = new Lang.Class({ // If we don't have an empty workspace at the end, add one if (!emptyWorkspaces[emptyWorkspaces.length -1]) { workspaceManager.append_new_workspace(false, global.get_current_time()); - emptyWorkspaces.push(false); + emptyWorkspaces.push(true); } + let lastIndex = emptyWorkspaces.length - 1; + let lastEmptyIndex = emptyWorkspaces.lastIndexOf(false) + 1; let activeWorkspaceIndex = workspaceManager.get_active_workspace_index(); emptyWorkspaces[activeWorkspaceIndex] = false; - // Delete other empty workspaces; do it from the end to avoid index changes - for (i = emptyWorkspaces.length - 2; i >= 0; i--) { - if (emptyWorkspaces[i]) + // Delete empty workspaces except for the last one; do it from the end + // to avoid index changes + for (i = lastIndex; i >= 0; i--) { + if (emptyWorkspaces[i] && i != lastEmptyIndex) workspaceManager.remove_workspace(this._workspaces[i], global.get_current_time()); }